package com.nd.demo;

import com.nd.demo.bean.*;
import com.nd.demo.dao.UserMapper;
import com.nd.demo.util.MatchingUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

@RequestMapping("/userAction") //RequestMapping注解描述该类的某个访问的访问地址
//如：在浏览器中输入http://localhost:8080/userAction/userLogin 就可以调用该类的userLogin方法
@Controller //控制器类必需添加 @Controller 让该类纳入Spring容器管理
public class UserAction {
    @Autowired
    UserMapper userMapper; //声明我们定义的UserMappr接口，在属性上添加 @Autowired注解，sprintBoot会自动将UserMapp接口的实现类在程序启动时自动传递过来

    @RequestMapping("/userLogin")
    @ResponseBody
    public JsonUtil userLogin(String userName, String pwd){
        JsonUtil jsonUtil = new JsonUtil();
        System.out.println("userLogin方法被调用,用户名为:"+userName+" 密码为:"+pwd);
        UserBean userBean = userMapper.userLogin(userName,pwd);//调用接口中定义的userLogin方法
        //查询数据库，根据userLogin方法的返回值 判断用户名密码是否正确，当返回值不为空时，表示用户名密码正确。
        if(userBean!=null){
            jsonUtil.setCode(0);
            jsonUtil.setMsg("验证通过");
        }else{
            jsonUtil.setCode(1);
            jsonUtil.setMsg("用户名或密码错误");
        }
        return jsonUtil;
    }



//    @RequestMapping("/userLogin2")
//    @ResponseBody
//    public JsonUtil userLogin2(String userName, String pwd){
//        JsonUtil jsonUtil = new JsonUtil();
//        System.out.println("userLogin2方法被调用,用户名为:"+userName+" 密码为:"+pwd);
//        TextBean textBean = userMapper.userLogin2(userName,pwd);//调用接口中定义的userLogin方法
//        //查询数据库，根据userLogin方法的返回值 判断用户名密码是否正确，当返回值不为空时，表示用户名密码正确。
//        if(textBean!=null){
//            jsonUtil.setCode(0);
//            jsonUtil.setMsg("验证通过");
//        }else{
//            jsonUtil.setCode(1);
//            jsonUtil.setMsg("用户名或密码错误");
//        }
//        return jsonUtil;
//    }




    /**
     *
     * @param userName 传入userName,根据userName删除用户数据
     * @return
     *
     * 通过 地址(测试接口):http://localhost8080/userAction/deleteUser?userName=admin 就可以删除表中对应的数据
     */
    @RequestMapping("/deleteUser")
    @ResponseBody
    public JsonUtil deleteUser(String userName){
        JsonUtil jsonUtil = new JsonUtil();
        int res = userMapper.deleteUserByUserName(userName);
        if (res>0){//表示删除成功
            jsonUtil.setCode(0);
            jsonUtil.setMsg("删除成功");
        }else{
            jsonUtil.setCode(1);
            jsonUtil.setMsg("未删除任何数据");
        }
        return jsonUtil;
    }

    /**
     * 查询所有用户的方法
     * 接口地址： http://localhost:8080/userAction/queryUser
     * @return
     */
    @RequestMapping("/queryUser")
    @ResponseBody
    public JsonUtil queryUser(){
        JsonUtil jsonUtil = new JsonUtil();
        List<UserBean> userBeanList = userMapper.selectAllUser();//查询tbl_user表的所有数据
        jsonUtil.setCode(0);
        jsonUtil.setMsg("查询成功");
        jsonUtil.setData(userBeanList);//把userBeanList做为JsonUtil 的data属性值
        //SpringBoot会利用返回值将其转换为json格式的字符串
        return jsonUtil;
    }



    /**
     * 查询所有用户的方法
     * 接口地址： http://localhost:8080/userAction/queryUser
     * @return
     */
    @RequestMapping("/queryIssue")
    @ResponseBody
    public JsonUtil queryIssue(String issue){
        JsonUtil jsonUtil = null;
        List<IssueBean> issueBeanList = userMapper.selectAllIssue();//查询issue表的所有数据
        IssueBean res = MatchingUtil.findReplay(issueBeanList,issue);
        jsonUtil = queryIssueReplay(res.getId());//查询答案
        return jsonUtil;
    }


    @RequestMapping("/queryReplay")
    @ResponseBody
    public JsonUtil queryReplay(String replayId){
        JsonUtil jsonUtil = new JsonUtil();
//        System.out.println(issueId);
        ReplayBean replayBean = userMapper.selectReplay(replayId);
        jsonUtil.setCode(0);
        jsonUtil.setMsg("成功");
        jsonUtil.setData(replayBean.getIssueReplay());
        return jsonUtil;
    }


    @RequestMapping("/queryIssueReplay")
    @ResponseBody
    public JsonUtil queryIssueReplay(String issueId){
        JsonUtil jsonUtil = new JsonUtil();
//        System.out.println(issueId);
        List<Issue_ReplayBean> Issue_ReplayBeanList = userMapper.selectIssueReplay(issueId);
        Issue_ReplayBean issue_replayBean = Issue_ReplayBeanList.get(0);
        for(Issue_ReplayBean issue_replayBean1:Issue_ReplayBeanList){
            if(issue_replayBean.getSatisfaction()<issue_replayBean1.getSatisfaction()){
//                System.out.println(replayBeanRes.getIssueReplay());
                issue_replayBean=issue_replayBean1;
            }
        }
        jsonUtil=queryReplay(issue_replayBean.getReplayId());
        return jsonUtil;
    }



    /**
     *
     * @param userBean 方法的参数为userBean,只要前端传入请求参数的名称与userBean的属性名称一致时，springBoot会自动赋值
     * 如前端的请求参数分别为 ?username=aaa&password=123&realName=张三，springBoot会就自动将请求参数赋给userBean的相应属性
     * @return
     */
    @RequestMapping("/saveUser")
    @ResponseBody
    public JsonUtil saveUser(UserBean userBean){
        System.out.println("前端传递过来的参数值为:"+userBean.getPassword());
        JsonUtil jsonUtil = new JsonUtil();
        //在此处验证userBean的属性值是否为空（待补充）
        try {
            int res = userMapper.insertUser(userBean);
            if (res > 0) {
                jsonUtil.setCode(0);
                jsonUtil.setMsg("新建用户成功");
            } else {
                jsonUtil.setCode(1);
                jsonUtil.setMsg("新建失败");
            }
        }catch (Exception e){
            e.printStackTrace();
            jsonUtil.setCode(1);
            jsonUtil.setMsg("新建失败,原因:"+e.getMessage());
        }
        return jsonUtil;
    }

    @RequestMapping("/updateUser")
    @ResponseBody
    public JsonUtil updateUser(UserBean userBean){
        JsonUtil jsonUtil = new JsonUtil();
        //调用userMapper中的update方法
        try {
            int res = userMapper.updateByUserName(userBean);
            if (res > 0) {
                jsonUtil.setCode(0);
                jsonUtil.setMsg("修改成功");
            } else {
                jsonUtil.setCode(1);
                jsonUtil.setMsg("修改失败，未找到要修改的数据");
            }
        }catch (Exception e ){
            jsonUtil.setCode(1);
            jsonUtil.setMsg("修改失败,原因："+e.getMessage());
        }
        return jsonUtil;
    }



    @RequestMapping("/permissionQuery")
    @ResponseBody
    /**
     * 查询所有权限
     */
    public JsonUtil permissionQuery(){
        JsonUtil jsonUtil=new JsonUtil();

        List<PermissionBean> userRightsBeanList=userMapper.selectAllPermission();

        jsonUtil.setCode(0);
        jsonUtil.setMsg("查询成功");
        jsonUtil.setData(userRightsBeanList);

        return jsonUtil;
    }



    @RequestMapping("/permissionUpdate")
    @ResponseBody
    /**
     * 修改权限
     */
    public JsonUtil updatePermissionById(PermissionBean permissionBean){
        JsonUtil jsonUtil=new JsonUtil();

        int res=userMapper.updatePermissionById(permissionBean);

        try{
            if(res>0){
                jsonUtil.setCode(0);
                jsonUtil.setMsg("修改数据成功");
            }else {
                jsonUtil.setCode(1);
                jsonUtil.setMsg("修改失败，未找到要修改的数据");
            }
        }catch (Exception e){
            jsonUtil.setCode(1);
            jsonUtil.setMsg("修改失败，原因："+e.getMessage());
        }
        return jsonUtil;
    }



    @RequestMapping("/permissionAdd")
    @ResponseBody
    /**
     * 添加权限
     */
    public JsonUtil addPermission(PermissionBean permissionBean){
        JsonUtil jsonUtil=new JsonUtil();

        try{

            int res=userMapper.addPermission(permissionBean);
            if(res>0){
                jsonUtil.setCode(0);
                jsonUtil.setMsg("添加权限成功");
            }else {
                jsonUtil.setCode(1);
                jsonUtil.setMsg("添加失败");
            }
        }catch (Exception e){
            jsonUtil.setCode(1);
            jsonUtil.setMsg("添加失败，原因："+e.getMessage());
        }
        return jsonUtil;
    }


    @RequestMapping("/permissionDelete")
    @ResponseBody
    /**
     * 删除权限
     */
    public JsonUtil deletePermissionById(String permission_id){
        JsonUtil jsonUtil=new JsonUtil();

        int res=userMapper.deletePermissionById(permission_id);
        if(res>0){//表示删除成功
            jsonUtil.setCode(0);
            jsonUtil.setMsg("删除成功");
        }else{
            jsonUtil.setCode(1);
            jsonUtil.setMsg("未删除任何数据");
        }
        return jsonUtil;
    }








    @RequestMapping("/roleQuery")
    @ResponseBody
    /**
     * 查询所有角色
     */
    public JsonUtil roleQuery(){
        JsonUtil jsonUtil=new JsonUtil();

        List<RoleBean> roleBeanList=userMapper.selectAllRole();

        jsonUtil.setCode(0);
        jsonUtil.setMsg("查询成功");

        jsonUtil.setData(roleBeanList);

        return jsonUtil;
    }






    @RequestMapping("/roleDelete")
    @ResponseBody
    /**
     * 删除角色
     */
    public JsonUtil deleteRoleById(String role_id){
        JsonUtil jsonUtil=new JsonUtil();

        int res=userMapper.deleteRoleById(role_id);
        if(res>0){//表示删除成功
            jsonUtil.setCode(0);
            jsonUtil.setMsg("删除成功");
        }else{
            jsonUtil.setCode(1);
            jsonUtil.setMsg("未删除任何数据");
        }
        return jsonUtil;
    }


    @RequestMapping("/roleUpdate")
    @ResponseBody
    /**
     * 修改角色
     */
    public JsonUtil updateRoleById(RoleBean roleBean){
        JsonUtil jsonUtil=new JsonUtil();


        try{
            int res=userMapper.updateRoleById(roleBean);
            if(res>0){
                jsonUtil.setCode(0);
                jsonUtil.setMsg("修改数据成功");
            }else {
                jsonUtil.setCode(1);
                jsonUtil.setMsg("修改失败，未找到要修改的数据");
            }
        }catch (Exception e){
            jsonUtil.setCode(1);
            jsonUtil.setMsg("修改失败，原因："+e.getMessage());
        }
        return jsonUtil;
    }



    @RequestMapping("/roleAdd")
    @ResponseBody
    /**
     * 添加角色
     */
    public JsonUtil addRole(RoleBean roleBean){
        JsonUtil jsonUtil=new JsonUtil();

        try{
            int res=userMapper.addRole(roleBean);
            if(res>0){
                jsonUtil.setCode(0);
                jsonUtil.setMsg("添加权限成功");
            }else {
                jsonUtil.setCode(1);
                jsonUtil.setMsg("添加失败");
            }
        }catch (Exception e){
            jsonUtil.setCode(1);
            jsonUtil.setMsg("添加失败，原因："+e.getMessage());
        }
        return jsonUtil;
    }



    @RequestMapping("/jobNumQuery")
    @ResponseBody
    /**
     * 查询所有工号
     */
    public JsonUtil jobNumQuery(){
        JsonUtil jsonUtil=new JsonUtil();

        List<JobNumBean> jobNumBeanList=userMapper.selectAllJobNum();
        jsonUtil.setCode(0);
        jsonUtil.setMsg("查询成功");

        jsonUtil.setData(jobNumBeanList);

        return jsonUtil;

    }


    @RequestMapping("/jobNumUpdate")
    @ResponseBody
    /**
     * 修改工号
     */
    public JsonUtil updateJobNumById(JobNumBean jobNumBean){
        JsonUtil jsonUtil=new JsonUtil();

        try{
            int res=userMapper.updateJobNumById(jobNumBean);
            if(res>0){
                jsonUtil.setCode(0);
                jsonUtil.setMsg("修改数据成功");
            }else {
                jsonUtil.setCode(1);
                jsonUtil.setMsg("修改失败，未找到要修改的数据");
            }
        }catch (Exception e){
            jsonUtil.setCode(1);
            jsonUtil.setMsg("修改失败，原因："+e.getMessage());
        }
        return jsonUtil;
    }



    @RequestMapping("/jobNubAdd")
    @ResponseBody
    /**
     * 添加工号
     */
    public JsonUtil addJobNum(JobNumBean jobNumBean){
        JsonUtil jsonUtil=new JsonUtil();

        try{
            int res=userMapper.addJobNum(jobNumBean);
            if(res>0){
                jsonUtil.setCode(0);
                jsonUtil.setMsg("添加权限成功");
            }else {
                jsonUtil.setCode(1);
                jsonUtil.setMsg("添加失败");
            }
        }catch (Exception e){
            jsonUtil.setCode(1);
            jsonUtil.setMsg("添加失败，原因："+e.getMessage());
        }
        return jsonUtil;
    }

    @RequestMapping("/jobNumDelete")
    @ResponseBody
    /**
     * 删除工号
     */
    public JsonUtil deleteJobNumById(String job_num_id){
        JsonUtil jsonUtil=new JsonUtil();

        int res=userMapper.deleteJobNumById(job_num_id);
        if(res>0){//表示删除成功
            jsonUtil.setCode(0);
            jsonUtil.setMsg("删除成功");
        }else{
            jsonUtil.setCode(1);
            jsonUtil.setMsg("未删除任何数据");
        }
        return jsonUtil;
    }


}

